Miniapp initialization
AppBoxoWebAppInit
An event to notify host app about miniapp’s initialization
AppBoxoWebAppGetInitData
Gets init data from host app
Returns an object with:
app_id Miniapp ID
client_id Host client ID
payload String consisting of encrypted user details
data {[key: string]: any} null custom data passed from Hostapp
token optional User session token if it is still active
TIP There is a shortcut .getInitData() that handles saving details above in cookies or localStorage and returns a Promise.
Miniapp manipulation
AppBoxoWebAppOpenMiniApp
Opens other miniapp based on provided application ID
Parameters
app_id required Miniapp ID to open
AppBoxoWebAppCloseMiniApp
Close current active miniapp
AppBoxoWebAppOnRestore
Event that is fired when miniapp is restored.
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type } = event.detail
if (type === 'AppBoxoWebAppOnRestore') {
// Miniapp restored
}
})
Authentication
AppBoxoWebAppLogin
Login user using credentials given from host app
Example:
const login = async (data) => {
const response = await appboxo.sendPromise('AppBoxoWebAppLogin', data)
// Returns http response
console.log(response)
}
TIP There is a shortcut that you can use:
appboxo.login(data).then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
AppBoxoWebAppLogout
Logout and clear session token
Example:
const logout = async (data) => {
await appboxo.sendPromise('AppBoxoWebAppLogout')
}
TIP There is a shortcut that you can use:
appboxo.logout().then(() => {
// logged out
}).catch(error => {
console.log(error)
})
AppBoxoWebAppClearToken
Clears saved token in host app
AppBoxoWebAppSaveToken
Saves provided token in host app
Parameters
token required Token to save in host app
Appboxo Pay
WARNING
This event is available from version 1.3.13 and above
AppBoxoWebAppPay
Send payment event to host app
transactionToken:string, amount: number, orderId: string, currency: string, extraParams?: any
Parameters
transactionToken required string Transaction token
miniappOrderId required number Unique identifier for the current payment
amount required boolean Payment amount
currency required string Define currency code
extraParams : any Any extra data
Example:
appboxoSdk.send('AppBoxoWebAppPay', {
transactionToken: "xxx",
amount: 199.00,
miniappOrderId: "TM121248847",
currency: "USD",
extraParams: {}
})
To receive the result of the payment event, just subscribe to the same event. Host app will sending these as the response:
Parameters
transactionToken : string Transaction token
miniappOrderId: number Unique identifier for the current payment
hostappOrderId : number Unique identifier from hostapp
amount : boolean Payment amount
currency : string Define currency code
status : string Status of the payment
extraParams : any Any extra data
Example:
const appboxoPaymentStatusHandler = (event) => {
if (!event.detail) {
return;
}
const { type, data } = event.detail;
if (type === 'AppBoxoWebAppPay') {
setResponse(data.status)
}
}
Tab bar
AppBoxoWebAppSetTabBar
Initialized native tab bar component
Parameters
show required boolean Defines TabBar visibility
activeTab required number Active TabBar item id
list required Array<{ tabId: number, tabName: string, tabIcon: string }> Define tabs
options required { color: string, background: string, selectedColor: string, hasBorder: boolean, borderColor: string } Tab bar options
badges optional Array<{ tabId: number, background: string, color: string, value?: string }> Define tab item badges.
Example:
appboxo.send('AppBoxoWebAppSetTabBar', {
show: true,
activeTab: 1,
list: [
{
tabId: 1,
tabName: 'Home',
tabIcon: ICON_URL
},
{
tabId: 2,
tabName: 'About',
tabIcon: ICON_URL
},
{
tabId: 3,
tabName: 'Services',
tabIcon: ICON_URL
}
],
badges: [
{
tabId: 1,
background: '#ff0000',
color: '#ffffff',
value: '4'
},
{
tabId: 3,
background: '#ff0000',
color: '#ffffff',
value: '1'
}
],
options: {
color: '#aaaaaa',
background: '#ffffff',
selectedColor: '#2eb8da',
hasBorder: true,
borderColor: '#dddddd'
}
})
Sending event with only required changes will preserve initial options:
appboxo.send('AppBoxoWebAppSetTabBar', {
activeTab: 2
})
appboxo.send('AppBoxoWebAppSetTabBar', {
options: {
color: '#ffffff',
background: '#000000',
selectedColor: '#2eb8da',
hasBorder: false
}
})
AppBoxoWebAppTabBarItemClick
Event that should be subscribed to in order to get active tab item click
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppTabBarItemClick') {
if (data.tabId) {
// Active tab id received
}
}
})
Navigation bar
AppBoxoWebAppSetNavigationBar
Activates native navigation bar.
Example:
appboxo.send('AppBoxoWebAppSetNavigationBar', {
title: 'Light nav bar', // Navigation bar title
backButton: true, // Controls back button visibility
background: '#ffffff', // Navigation bar background color
frontColor: '#000000', // Navigation bar and status bar accent color
show: true // Controls navigation bar visibility,
isBackgroundTransparent: true, // When set to true, will make background transparent
frontColorWhenTransparent: '#ffffff', // Navigation bar and status bar accent color when navigation has transparent background
changeBackgroundOnScroll: true // Will smoothly change backgroound from transparent to `background` color on scroll
})
Sending event with only required changes will preserve initial options:
appboxo.send('AppBoxoWebAppSetNavigationBar', {
title: 'Changed some time later'
})
Changes actions button theme. By default it is dark.
Example:
appboxo.send('AppBoxoWebAppSetActionButton', {
isLight: true
})
Loading indicator
AppBoxoWebAppLoadingIndicator
Show native loading indicator.
Important: Loading indicator will timeout after 30 seconds with prompt to hide it if no event is dispatched to change it.
Example:
appboxo.send('AppBoxoWebAppLoadingIndicator', {
show: true
})
QR code reader
AppBoxoWebAppOpenQRCodeReader
Opens native QR code reader.
This method will prompt a permission request for camera.
Example:
appboxo.send('AppBoxoWebAppOpenQRCodeReader');
Results from QR code reader are received by events: AppBoxoWebAppOpenQRCodeReaderResult or AppBoxoWebAppOpenQRCodeReaderFailed
Example:
// Subscribe to events to receive data
appboxo.subscribe(event => {
if (!event.detail) {
return;
}
const { type, data } = event.detail;
if (type === 'AppBoxoWebAppOpenQRCodeReaderResult') {
// Reading result of the QR Code Reader
console.log(data.code_data);
}
if (type === 'AppBoxoWebAppOpenQRCodeReaderFailed') {
// Catching the error
console.log(data.error_type, data.error_data);
}
});
Haptic feedback
AppBoxoWebAppVibrate
Triggers haptic engine on the device, if available.
Parameters
style optional 'light' | 'medium' | 'heavy' Controls strength of vibration, defaults to ‘light’.
Example:
appboxo.send('AppBoxoWebAppVibrate', {
style: 'medium'
})
Action sheet
AppBoxoWebAppShowActionSheet
Shows native action sheet
Parameters
header optional string Action sheet header text
list required Array<{ id: number, text: string, role?: 'cancel' | 'destructive' | 'selected' }> Define action sheet items
Example:
appboxo.send('AppBoxoWebAppShowActionSheet', {
header: 'Albums',
list: [
{
id: 1,
text: 'Delete',
role:'destructive'
},
{
id: 2,
text: 'Selected',
role:'selected'
},
{
id: 3,
text: 'Share',
},
{
id: 4,
text: 'Play',
},
{
id: 5,
text: 'Cancel',
role: 'cancel'
}
]
})
AppBoxoWebAppActionSheetItemClick
Event that should be subscribed to in order to get action sheet item click
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppActionSheetItemClick') {
if (data.id) {
// Action sheet item id received
}
}
})
Geolocation
AppBoxoWebAppGetGeodata
Requests user geodata.
This method will prompt a permission request to access geolocation.
Example:
const getGeodata = async () => {
const data = await appboxo.sendPromise('AppBoxoWebAppGetGeodata');
return {
isAvailable: !!data.available,
lat: parseFloat(data.lat),
long: parseFloat(data.long)
};
};
Map
AppBoxoWebAppChooseLocation
Open full screen map to choose location
This method will prompt a permission request to access geolocation.
Example:
const chooseLocation = async () => {
const data = await appboxo.sendPromise('AppBoxoWebAppChooseLocation');
return {
latitude: parseFloat(data.latitude),
longitude: parseFloat(data.longitude)
};
};
AppBoxoWebAppOpenLocation
Open full screen map to that shows markered location
This method will prompt a permission request to access geolocation.
Example:
const openLocation = async () => {
const data = await appboxo.sendPromise('AppBoxoWebAppOpenLocation', {
latitude: 42.5264986,
longitude: 74.5788997,
scale: 13
});
console.log(data)
// Returns:
// {
// result: true
// }
};
Alert
AppBoxoWebAppShowAlert
Show native alert box
Parameters
header optional string Alert header text
message optional string Alert message
buttons required Array<{ id: number, text: string, role?: 'cancel' | 'destructive' }> Define buttons
Example:
const showAlert = async () => {
const data = await appboxo.sendPromise('AppBoxoWebAppShowAlert', {
header: 'Native alert',
message: 'This is a native alert box.',
buttons: [
{
id: 1,
text: 'Cancel',
role:'destructive'
},
{
id: 2,
text: 'Ok'
}
]
});
// Selected button
const selectedButton = data.id
};
Image gallery
AppBoxoWebAppShowImages
Open full screen native image gallery
Parameters
start_index optional number Index to start showing from
images required Array<string> Image urls
Example:
appboxo.send('AppBoxoWebAppShowImages', {
images: [
// image urls
]
});
After image gallery is closed, same event will be dispatched back to miniapp with result data.
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppShowImages') {
if (data.result) {
// Image gallery has been shown successfully
} else {
// There were problems loading provided images
}
}
})
Storage
AppBoxoWebAppStorageGet
Requests a value from the storage
Parameters
keys required Array<string> Keys for getting ([a-zA-Z_-0-9])
Example:
const getUserData = async () => {
const userData = await appboxo.sendPromise('AppBoxoWebAppStorageGet', {
keys: ['username', 'email']
});
console.log(userData)
// Returns:
// {
// keys: [
// {
// key: 'username',
// value: 'John'
// },
// {
// key: 'email',
// value: 'john@doe.com'
// }
// ]
// }
};
AppBoxoWebAppStorageGetKeys
Request list of keys of some stored values
Parameters
count required number Count of keys to get. Max value is 1000
offset optional number The offset required to fetch a specific subset of keys. Default: 0
Example:
const getStorageKeys = async () => {
const storageKeys = await appboxo.sendPromise('AppBoxoWebAppStorageGetKeys', {
count: 10
});
console.log(storageKeys);
// Returns:
// {
// keys: ['username', 'email']
// }
};
AppBoxoWebAppStorageSet
Stores value in storage
Parameters
key required string The key of value ([a-zA-Z_-0-9])
value optional string value
Example:
const saveData = async ({ key, value }) => {
const response = await appboxo.sendPromise('AppBoxoWebAppStorageSet', {
key,
value
});
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppStorageRemove
Removes value in storage
Parameters
key required string The key of value ([a-zA-Z_-0-9])
Example:
const removeData = async ({ key }) => {
const response = await appboxo.sendPromise('AppBoxoWebAppStorageRemove', { key });
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppStorageClear
Clears all data in storage
Example:
const clearStorage = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStorageClear');
console.log(response);
// Returns:
// {
// result: true
// }
};
Clipboard
AppBoxoWebAppGetClipboard
Gets the content on the system clipboard.
Example:
const getClipboard = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppGetClipboard');
console.log(response);
// Returns:
// {
// data: 'from clipboard or null'
// }
};
AppBoxoWebAppSetClipboard
Sets the content on the system clipboard.
Parameters
data required string Content to be copied to clipboard
Example:
const setClipboard = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppSetClipboard', {
data: 'copied to clipboard'
});
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppGetSystemInfo
Gets system information.
Example:
const getSystemInfo = async () => {
const systemInfo = await appboxo.sendPromise('AppBoxoWebAppGetSystemInfo');
console.log(systemInfo);
// Returns:
// {
// brand: 'Apple Inc.',
// model: 'iPhone 7 Plus',
// pixelRatio: 3,
// screenWidth: 414,
// screenHeight: 736,
// windowWidth: 414,
// windowHeight: 672,
// statusBarHeight: 20,
// system: 'iOS 10.0.1',
// platform: 'iOS / iPhone OS',
// SDKVersion: 1.0.4,
// cameraAuthorized: true,
// locationAuthorized: false,
// locationEnabled: false,
// }
};
Accelerometer
AppBoxoWebAppStartAccelerometer
Starts listening on acceleration data.
Example:
const startAccelerometer = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStartAccelerometer', {
interval: 200 // Update interval in ms
});
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppStopAccelerometer
Stops listening on acceleration data.
Example:
const stopAccelerometer = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStopAccelerometer');
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppOnAccelerometerChange
Listens on the acceleration data event. You can send AppBoxoWebAppStopAccelerometer event to stop listening.
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppOnAccelerometerChange') {
console.log(data.x)
console.log(data.y)
console.log(data.z)
}
})
Gyroscope
AppBoxoWebAppStartGyroscope
Starts listening on gyroscope data.
Example:
const startAccelerometer = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStartGyroscope', {
interval: 200 // Update interval in ms
})
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppStopGyroscope
Stops listening on gyroscope data.
Example:
const stopAccelerometer = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStopGyroscope');
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppOnGyroscopeChange
Listens on the gyroscope data event. You can send AppBoxoWebAppStopGyroscope event to stop listening.
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppOnGyroscopeChange') {
console.log(data.x)
console.log(data.y)
console.log(data.z)
}
})
Compass
AppBoxoWebAppStartCompass
Starts listening on compass data.
Example:
const startCompass = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStartCompass')
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppStopCompass
Stops listening on compass data.
Example:
const stopCompass = async () => {
const response = await appboxo.sendPromise('AppBoxoWebAppStopCompass');
console.log(response);
// Returns:
// {
// result: true
// }
};
AppBoxoWebAppOnCompassChange
Listens on the compass data event. You can send AppBoxoWebAppStopCompass event to stop listening.
Example:
appboxo.subscribe((event) => {
if (!event.detail) {
return
}
const { type, data } = event.detail
if (type === 'AppBoxoWebAppOnCompassChange') {
console.log(data.direction)
}
})
Background color
AppBoxoWebAppSetBackgroundColor
Dynamically sets the background color of the window.
appboxo.send('AppBoxoWebAppSetBackgroundColor', {
color: '#ff0000'
});
Status bar color
AppBoxoWebAppSetStatusBarColor
Dynamically sets the status bar color
appboxo.send('AppBoxoWebAppSetStatusBarColor', {
color: '#ffffff'
})
Tracking
AppBoxoWebAppTrack
Send postback tracking data about transaction
Example:
const sendTransactionData = async (data) => {
const response = await appboxo.sendPromise('AppBoxoWebAppTrack', data)
// Returns http response
console.log(response)
}
sendTransactionData({
action: 'transaction',
payload: {
shipping: 5,
tax: 0.57,
discount: 2.25,
currency_code: 'USD',
customer: { // Optional
first_name: 'John',
last_name: 'Doe',
email: 'jdoe@domain.com',
ip_address: '234.192.4.75'
},
items: [
{
name: 'Product name',
description: 'Product description',
price: 8.80,
amount: 2,
total: 17.6,
package_id: 1232
}
]
}
})
TIP There is a shortcut that you can use to send tracking data:
appboxo.track(data).then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
Custom events
AppBoxoWebAppCustomEvent
Send custom event to host app.
Example:
appboxo.send('AppBoxoWebAppCustomEvent', {
type: 'any_string_identifier', // Any string identifier to be handled by host app
payload: { // Any payload data to be send to host app
// Your data
}
})
Download file
AppBoxoWebAppDownloadFile
Send event to download file
Example:
appboxo.send('AppBoxoWebAppDownloadFile', {
url: 'url',
file_name: 'filename.png'
})
Share text and file
AppBoxoWebAppShare
Send event to open native share modal
Example:
appboxo.send('AppBoxoWebAppShare', {
text: 'text',
url: 'url',
file_name: 'filename.png'
})